-
Notifications
You must be signed in to change notification settings - Fork 269
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implemented Black, K83R from Axelrod's Second #1155
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All looks fantastic. Thanks!
I have looked through /~https://github.com/Axelrod-Python/TourExec/blob/master/src/strategies/k83r.f and confirm the logic is implemented correctly. 👍
Are we sure the memory depth is 5? It's a weird case since you need to know the round number + the last five rounds. |
This is similar to memory one strategies that all have a memory depth of 1 but that act differently on their first move to any other right? |
You don't need to know the full round number. If you gave me just the last five moves as a list, I could check if that list is length 5 or not. |
Even better point 👍 |
I guess that's what I'm asking -- on the first move there's no history so it's sort of a special case and players must have a separate rule. Here on rounds say 4, 5, 6 you have to know the round number and then decide from one of two behaviors. So we need to know if there are at least 5 rounds of history already, so we need the size of the history and therefore all of the history. Or is the rule that we can ask "Are there at least X rounds of history?" and then take the minimum needed value of X as the memory depth? |
Also think about the case where there's X rounds of initial play and then a behavior that depends on the last Y rounds, where X != Y. |
Also, if the implementation were setting a bit if_round_greater_than_five then we usually call that kind of situation infinite memory... |
It's a good question. I think that my personal preference would be to define memory as "if you give |
In this sense, Tit-For-Tat has to know the round number, since there's a special rule for when turn=1, so you have to know the turn number. But I think it's clear that TFT is memory=1; by analogy, this is memory=5. And I think it's intuitive; you're allowed to be forgetful. |
In this particular case if we're on the third turn with
would return
This would potentially assist with #597 (not in finding an algorithm but at least verifying upper bounds on memory lengths). |
If we're on the 150th turn then |
I've opened #1156 as a suggestion for a test (to perhaps move the discussion about the way to go over there). |
Ok, let's discuss elsewhere. I'll merge as is. |
Fingerprints Below